package cn.yogehaoren.badfox.core;

import cn.yogehaoren.badfox.struct.Response;

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

/**
 * 爬虫执行方法的通用拦截器
 *
 */
public interface BadFoxInterceptor {
    /**
     * 获取目标方法应标记的注解
     *
     * @return Annotation
     */
    public Class<? extends Annotation> getTargetAnnotationClass();

    /**
     * 当需要控制多个拦截器执行的先后顺序时可以重写这个方法
     *
     * @return 权重, 权重越大越在外层，优先拦截
     */
    public int getWeight();

    /**
     * 可以在目标方法执行之前定义一些处理逻辑
     * @param method 当前拦截器生效的方法
     * @param response 拦截到的参数
     */
    public void before(Method method, Response response);

    /**
     * 可以在目标方法执行之后定义一些处理逻辑
     * @param method 当前拦截器生效的方法
     * @param response 拦截到的参数
     */
    public void after(Method method, Response response);
}
